home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / software / utilities / installer / gui api / example / igui_welcome.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-27  |  11.4 KB  |  264 lines

  1.  
  2. #include "includes.h"
  3. #include "installergui_data.h"
  4.  
  5. /********************************************************************
  6.  *
  7.  *  DESCRIPTION
  8.  *
  9.  *  a very complex one :)
  10.  *  this handles both WELCOME panels, stores the user-selected
  11.  *  data (such as LOGFILE, USERMODE, PRETEND...) into the
  12.  *  applications global environment (app->app_GlobalEnv)
  13.  *
  14.  *  IN:  application - pointer to the private application structure
  15.  *       appname - the name of the application (i.e. the content
  16.  *                 of the @APPNAME variable)
  17.  *  OUT: -
  18.  */
  19.  
  20. /********************************************************************
  21.  *
  22.  *  STATIC
  23.  *
  24.  */
  25.  
  26. static APTR make_intro1(APTR, char *);
  27. static APTR make_intro2(APTR);
  28.  
  29. static const struct Hook welcome_MXTwoHook = { { NULL, NULL }, (VOID *) guistuff_MXTwoFun, NULL, NULL };
  30. static const struct Hook welcome_MXThreeHook = { { NULL, NULL }, (VOID *) guistuff_MXThreeFun, NULL, NULL };
  31. static const struct Hook welcome_SetValHook = { { NULL, NULL }, (VOID *) guistuff_SetValFun, NULL, NULL };
  32.  
  33. /********************************************************************
  34.  *
  35.  *  EXTERN
  36.  *
  37.  */
  38.  
  39. /********************************************************************
  40.  *
  41.  *  PUBLIC
  42.  *
  43.  */
  44.  
  45. /********************************************************************
  46.  *
  47.  *  CODE
  48.  *
  49.  */
  50.  
  51. void __asm igui_Welcome(register __a0 APTR application, register __a1 char *appname)
  52. {
  53.   #ifdef DEBUG
  54.   DEBUG_MAKRO
  55.   #endif
  56.  
  57.   {
  58.     struct Application *app = (struct Application *) application;
  59.  
  60.     // set the help text
  61.     igui_SetHelp(app, app->app_Texts[HELP_INTRO1]);
  62.  
  63.     // make a new panel an display it
  64.     if (!guistuff_NewContent(app, make_intro1(app, appname))) { app->app_Error = GUIERROR_NO_GUI_OBJECT; return; }
  65.  
  66.     // wait for user input
  67.     igui_WaitApp(app);
  68.     if (!igui_QuitApp(app))
  69.     {
  70.       // only if the selected user is AVERAGE or EXPERT, we have to set up
  71.       // the second panel
  72.       if (app->app_GlobalEnv[GENV_USER] != USER_NOVICE)
  73.       {
  74.         if (!guistuff_NewContent(app, make_intro2(app))) { app->app_Error = GUIERROR_NO_GUI_OBJECT; return; }
  75.         igui_SetHelp(app, app->app_Texts[HELP_INTRO2]);
  76.         igui_WaitApp(app);
  77.       }
  78.     }
  79.  
  80.     igui_EmptyPanel(app);
  81.     return;
  82.   }
  83. }
  84.  
  85. /********************************************************************/
  86.  
  87. // create the panel for the first intro
  88. static APTR make_intro1(APTR application, char *appname)
  89. {
  90.   struct Application *app = (struct Application *) application;
  91.  
  92.   char *welcometext;
  93.   APTR IM_novice, IM_average, IM_expert,
  94.        obj = NULL;
  95.  
  96.   // create the welcome text
  97.   welcometext = sav_StringF2(app->app_Texts[INTRO1_WELCOME], &appname);
  98.   if (!welcometext) { }
  99.   else
  100.   {
  101.     obj = GroupObject,
  102.                   Child, TextObject,
  103.                     MUIA_Frame, MUIV_Frame_None,
  104.                     MUIA_Text_Contents, welcometext,
  105.                     MUIA_Text_SetMin, TRUE,
  106.                     MUIA_Text_PreParse, "\33c",
  107.                   End,
  108.                   Child, HVSpace,
  109.                   Child, GroupObject,
  110.                     MUIA_Frame, MUIV_Frame_Group,
  111.                     MUIA_FrameTitle, app->app_Texts[INTRO1_MODE],
  112.                     MUIA_Group_Horiz, TRUE,
  113.                     Child, HVSpace,
  114.                     Child, GroupObject,
  115.                       MUIA_Group_Columns, 2,
  116.                       Child, IM_novice = guistuff_InitRadio((app->app_GlobalEnv[GENV_GUI_DEFUSER]==USER_NOVICE)?TRUE:FALSE,
  117.                                                        (app->app_GlobalEnv[GENV_GUI_MINUSER]>USER_NOVICE)?TRUE:FALSE),
  118.                       Child, LLabel(app->app_Texts[INTRO1_NOVICE]),
  119.                       Child, IM_average = guistuff_InitRadio((app->app_GlobalEnv[GENV_GUI_DEFUSER]==USER_AVERAGE)?TRUE:FALSE,
  120.                                                         (app->app_GlobalEnv[GENV_GUI_MINUSER]>USER_AVERAGE)?TRUE:FALSE),
  121.                       Child, LLabel(app->app_Texts[INTRO1_AVERAGE]),
  122.                       Child, IM_expert = guistuff_InitRadio((app->app_GlobalEnv[GENV_GUI_DEFUSER]==USER_EXPERT)?TRUE:FALSE,
  123.                                                        FALSE),
  124.                       Child, LLabel(app->app_Texts[INTRO1_EXPERT]),
  125.                     End,
  126.                     Child, HVSpace,
  127.                   End,
  128.                   Child, HVSpace,
  129.                 End;
  130.  
  131.     if (obj)
  132.     {
  133.       DoMethod(IM_novice, MUIM_Notify, MUIA_Pressed, TRUE,
  134.                MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_novice, IM_average, IM_expert);
  135.       DoMethod(IM_average, MUIM_Notify, MUIA_Pressed, TRUE,
  136.                MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_average, IM_novice, IM_expert);
  137.       DoMethod(IM_expert, MUIM_Notify, MUIA_Pressed, TRUE,
  138.                MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_expert, IM_novice, IM_average);
  139.  
  140.       DoMethod(IM_novice, MUIM_Notify, MUIA_Pressed, TRUE,
  141.                MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_NOVICE);
  142.       DoMethod(IM_average, MUIM_Notify, MUIA_Pressed, TRUE,
  143.                MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_AVERAGE);
  144.       DoMethod(IM_expert, MUIM_Notify, MUIA_Pressed, TRUE,
  145.                MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_EXPERT);
  146.     }
  147.   }
  148.  
  149.   return(obj);
  150. }
  151.  
  152. /********************************************************************/
  153.  
  154. static APTR make_intro2(APTR application)
  155. {
  156.   struct Application *app = (struct Application *) application;
  157.  
  158.   APTR IM_pretend, IM_real, IM_printer, IM_file, IM_nolog;
  159.   APTR CM_debug, CM_startup, CM_uninstall, CM_dontdelsysdir, CM_packagecomment, CM_alwaysconfirm;
  160.   APTR obj;
  161.  
  162.   obj = GroupObject,
  163.           Child, GroupObject,
  164.             MUIA_Frame, MUIV_Frame_Group,
  165.             MUIA_FrameTitle, app->app_Texts[INTRO2_OPTS],
  166.             MUIA_Group_Horiz, TRUE,
  167.             Child, HVSpace,
  168.             Child, GroupObject,
  169.               MUIA_Group_Columns, 2,
  170.               Child, IM_real = guistuff_InitRadio(TRUE, FALSE),
  171.               Child, LLabel(app->app_Texts[INTRO2_REAL]),
  172.               Child, IM_pretend = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_GUI_ALLOW_PRETEND])),
  173.               Child, LLabel(app->app_Texts[INTRO2_PRETEND]),
  174.             End,
  175.             Child, HVSpace,
  176.           End,
  177.           Child, HVSpace,
  178.           Child, GroupObject,
  179.             MUIA_Frame, MUIV_Frame_Group,
  180.             MUIA_FrameTitle, app->app_Texts[INTRO2_LOG],
  181.             MUIA_Group_Horiz, TRUE,
  182.             Child, HVSpace,
  183.             Child, GroupObject,
  184.               MUIA_Group_Columns, 2,
  185.               Child, IM_printer = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_GUI_ALLOW_PRINT])),
  186.               Child, LLabel(app->app_Texts[INTRO2_PRINTER]),
  187.               Child, IM_file = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_GUI_ALLOW_LOG])),
  188.               Child, LLabel(app->app_Texts[INTRO2_FILE]),
  189.               Child, IM_nolog = guistuff_InitRadio(TRUE, FALSE),
  190.               Child, LLabel(app->app_Texts[INTRO2_NONE]),
  191.             End,
  192.             Child, HVSpace,
  193.           End,
  194.           Child, HVSpace,
  195.           Child, GroupObject,
  196.             MUIA_Frame, MUIV_Frame_Group,
  197.             MUIA_FrameTitle, app->app_Texts[INTRO2_ADVANCED],
  198.             MUIA_Group_Horiz, TRUE,
  199.             Child, HVSpace,
  200.             Child, GroupObject,
  201.               MUIA_Group_Columns, 4,
  202.                 Child, Label(app->app_Texts[INTRO2_DEBUG]),
  203.                 Child, CM_debug = CheckMark(app->app_GlobalEnv[GENV_DEBUGMODE]),
  204.                 Child, Label(app->app_Texts[INTRO2_NOSTARTUPSEQUENCE]),
  205.                 Child, CM_startup = CheckMark(app->app_GlobalEnv[GENV_STARTUP]),
  206.                 Child, Label(app->app_Texts[INTRO2_UNINSTALL]),
  207.                 Child, CM_uninstall = CheckMark(app->app_GlobalEnv[GENV_UNINSTALL]),
  208.                 Child, Label(app->app_Texts[INTRO2_DONTDELFROMSYSDIRS]),
  209.                 Child, CM_dontdelsysdir = CheckMark(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]),
  210.                 Child, Label(app->app_Texts[INTRO2_PACKAGE_COMMENT]),
  211.                 Child, CM_packagecomment = CheckMark(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]),
  212.                 Child, Label(app->app_Texts[INTRO2_ALWAYSCONFIRM]),
  213.                 Child, CM_alwaysconfirm = CheckMark(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]),
  214.             End,
  215.             Child, HVSpace,
  216.           End,
  217.           Child, HVSpace,
  218.         End;
  219.  
  220.   if (obj)
  221.   {
  222.     // mx
  223.     DoMethod(IM_real, MUIM_Notify, MUIA_Pressed, TRUE,
  224.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_MXTwoHook, IM_real, IM_pretend);
  225.     DoMethod(IM_pretend, MUIM_Notify, MUIA_Pressed, TRUE,
  226.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_MXTwoHook, IM_pretend, IM_real);
  227.  
  228.     DoMethod(IM_real, MUIM_Notify, MUIA_Pressed, TRUE,
  229.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_INSTALL]), INSTALL_FOR_REAL);
  230.     DoMethod(IM_pretend, MUIM_Notify, MUIA_Pressed, TRUE,
  231.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_INSTALL]), INSTALL_PRETEND);
  232.  
  233.     DoMethod(IM_printer, MUIM_Notify, MUIA_Pressed, TRUE,
  234.              MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_printer, IM_file, IM_nolog);
  235.     DoMethod(IM_file, MUIM_Notify, MUIA_Pressed, TRUE,
  236.              MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_file, IM_printer, IM_nolog);
  237.     DoMethod(IM_nolog, MUIM_Notify, MUIA_Pressed, TRUE,
  238.              MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_nolog, IM_printer, IM_file);
  239.  
  240.     DoMethod(IM_printer, MUIM_Notify, MUIA_Pressed, TRUE,
  241.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_PRINTER);
  242.     DoMethod(IM_file, MUIM_Notify, MUIA_Pressed, TRUE,
  243.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_FILE);
  244.     DoMethod(IM_nolog, MUIM_Notify, MUIA_Pressed, TRUE,
  245.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_NOLOG);
  246.  
  247.     // checkmarks
  248.     DoMethod(CM_uninstall, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  249.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_UNINSTALL]), !(app->app_GlobalEnv[GENV_UNINSTALL]));
  250.     DoMethod(CM_startup, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  251.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_STARTUP]), !(app->app_GlobalEnv[GENV_STARTUP]));
  252.     DoMethod(CM_debug, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  253.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_DEBUGMODE]), !(app->app_GlobalEnv[GENV_DEBUGMODE]));
  254.     DoMethod(CM_packagecomment, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  255.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]), !(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]));
  256.     DoMethod(CM_alwaysconfirm, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  257.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]), !(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]));
  258.     DoMethod(CM_dontdelsysdir, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
  259.              MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]), !(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]));
  260.   }
  261.  
  262.   return(obj);
  263. }
  264.